#include <iostream>
#include <strings.h>

using namespace std;

// 邻接表节点
struct node
{
    int data;
    struct node *next;
};

struct adjNode
{
    bool flag; // 用来标识是否是p节点
    struct node *p;
};

void show(adjNode *adj, int len)
{
    for(int i=1; i<=len; i++)
    {
        node *p = adj[i].p;

        cout << "[" << i << "] ";

        while(p != NULL)
        {
            cout << "--> " << p->data;
            p = p->next;
        }

        cout << endl;
    }
}

int main()
{
    int t; // t组数据
    cin >> t;

    for(int k=0; k<t; k++)
    {
        int n; // n个节点
        cin >> n;

        int D[n+1]; // 每个节点的度
        memset(D, 0, sizeof(int)*(n+1));

        // 分配 n+1 个节点的邻接表
        adjNode *adj = (adjNode *)calloc(n+1, sizeof(adjNode));

        // 输入 n-1 条边
        for(int i=1; i<n; i++)
        {
            int x, y;
            cin >> x >> y;

            // 第 x 个节点增加一个孩子，度+1
            D[x]++;

            // 1，创建孩子节点
            node *yNode = new node;
            yNode ->data = y;
            yNode ->next = nullptr;

            node *tail = adj[x].p;

            // 2，若 x 节点的邻接表为空，则直接将 y 接入末尾
            if(tail == NULL)
            {
                adj[x].p = yNode;
                continue;
            }

            // 3，否则，找到 x 节点的邻接表的末尾节点，再将 y 接入
            while(tail->next != NULL)
                tail = tail->next;

            tail->next = yNode;
        }

        // 显示邻接表
        show(adj, n);

        // 显示每个节点的度
        for(int i=1; i<=n; i++)
        {
            cout << "[" << D[i] << "]\t";
        }
        cout << endl;

        // 将所有的节点设置为默认是 p 节点
        for(int i=1; i<=n; i++)
            adj[i].flag = true;


        // 计算 p 节点的个数
        for(int i=1; i<=n; i++)
        {
            // 遍历每个邻接表
            node *tmp = adj[i].p;
            while(tmp != nullptr)
            {
                // 当前度小于某个孩子的度，不满足 p 节点的定义
                if(D[i] < D[tmp->data])
                {
                    adj[i].flag = false;
                    break;
                }

                // 当前节点的度大于某个孩子的度
                if(D[i] > D[tmp->data])
                {
                    // 孩子一定不是 p 节点
                    adj[tmp->data].flag = false;
                }

                // 继续判断下一个孩子
                tmp = tmp->next;
            }
        }

        // 显示 p 节点的个数
        int ans = 0;

        for(int i=1; i<=n; i++)
        {
            if(adj[i].flag)
                ans++;
        }
        cout << ans << endl;
    }

    return 0;
}

